<!DOCTYPE html>
<html class="no-js" lang="zh">
  <head>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<link rel="alternate" href="https://www.desgard.com" hreflang="pt-BR">
<link href="http://gmpg.org/xfn/11" rel="profile">
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="theme-color" content="#005344">
<title>Guardia · 瓜地</title>
<meta name="google-site-verification" content="zS1dSn20XtA4FJYEOQLXqI0boxZdMnJ2g3beje-cl20">
<meta name="description" content="I write many code to write less code.💻">
<meta name="keywords" content="">
<!-- Social: Facebook / Open Graph -->
<meta property="og:url" content="https://www.desgard.com/404.html">
<meta property="og:title" content="       404 号瓜已经被猹偷走 | Gua  ">
<meta property="og:description" content="I write many code to write less code.💻">
<meta property="og:site_name" content="Desgard_Duan">
<meta property="og:locale" content="pt_BR">
<meta property="og:type" content="website">
<meta property="og:author" content="https://www.facebook.com/desgard.duan">
<meta property="og:image" content="https://www.desgard.com">
<!-- Social: Twitter -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@nandomoreirame">
<meta name="twitter:domain" content="https://www.desgard.com">
<meta name="twitter:title" content="       404 号瓜已经被猹偷走 | Gua  ">
<meta name="twitter:description" content="I write many code to write less code.💻">
<meta name="twitter:image:src" content="https://www.desgard.com">
<!-- Favicons -->
<link rel="apple-touch-icon" sizes="114x114" href="https://www.desgard.com/assets/ico/apple-touch-icon-114-516f4e19976b9e4dbb77ad9b576831fe.png">
<link rel="apple-touch-icon" sizes="72x72" href="https://www.desgard.com/assets/ico/apple-touch-icon-72-5409b2df229305703caf583d86c845ab.png">
<link rel="apple-touch-icon" href="https://www.desgard.com/assets/ico/apple-touch-icon-57-aa873e019cf659e0d4e6a0b5bb9f379d.png">
<link rel="shortcut icon" href="https://www.desgard.com/assets/ico/favicon-4298be3d3fbe23e18d65bded9d930899.png">
<!-- rel prev and next -->
<!-- Canonical link tag -->
<link rel="canonical" href="https://www.desgard.com/404.html">
<link rel="alternate" type="application/rss+xml" title="Gua" href="https://www.desgard.com/feed.xml">
<link rel="stylesheet" href="/assets/main-0b7b828712f4c43b75bba4861c907bb1.css">
<script src="/assets/modernizr-custom-cb807611a3e262b2eac59444cbab74d6.js" data-cfasync="false"></script>
<script src="/assets/js/jquery-3.1.js"></script>
<script src="/assets/js/jquery.rotate.js"></script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="application/ld+json">
{
  "@context": "http://schema.org",
  "@type": "Website",
  "publisher": "www.desgard.com",
  "url": "http://www.desgard.com/",
  "description": "瓜地"
}
</script>
<script type="text/javascript">
  var disqus_shortname = 'desgard',
      baseurl          = '';
</script>
<!--
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-52446115-1']);
_gaq.push(['_trackPageview']);
(function() {
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>-->
<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "//hm.baidu.com/hm.js?c5a8123bc51782a3083a631ed9ff50e4";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>
<script type="text/x-mathjax-config">
    MathJax.Hub.Config({
      tex2jax: {
        inlineMath: [ ['$','$'] ],
        displayMath: [ ['$$','$$'] ],
        processEscapes: true
      }
    });
  </script>
  </head>
  <body class="page-template error404">
    <header class="header">
  <div class="container">
    <h1><a href="/"><strong>desgard</strong>.com</a></h1>
    <nav class="navbar">
      <ul>
        <li><a href="/">Home</a></li>
        <li><a href="#!" data-modal="modalSearch"><i class="fa fa-search"></i></a></li>
        <li><a href="/comment " target="_blank"><i class="fa fa-comments"></i></a></li>
        <li><a href="/feed.xml" target="_blank"><i class="fa fa-feed"></i></a></li>
      </ul>
    </nav>
  </div>
</header>
    <main class="wrapper container" itemprop="mainContentOfPage" itemscope="itemscope" itemtype="http://schema.org/Blog">
  <!-- this temple for all part page -->
  <div class="post" itemprop="mainContentOfPage">
    <header class="post-header">
        <center><h1>404 号瓜已经被猹偷走</h1></center>
    </header>
    <strong><center>经鉴定，此瓜已被猹偷窃，无法品尝。但主人为你准备了其他好瓜。尽情选用。</center></strong>
</br>
<center><img src="http://7xwh85.com1.z0.glb.clouddn.com/404.jpg" /></center>
  </div>
<article class="post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
  <header class="post-header">
    <h1 class="post-title"><a href="/autolayout-simplex/" title="Permalink to AutoLayout 中的线性规划 - Simplex 算法">AutoLayout 中的线性规划 - Simplex 算法</a></h1>
  </header>
  <p><a href="/autolayout-simplex/" title="Permalink to AutoLayout 中的线性规划 - Simplex 算法" class="read-more">前一段时间由于跳槽，博客停更了大概有 150 天左右的样子。在所有事情都安置好后，决定推掉之前写过的半截文章，开始更这么一个专题。再这之前，自己没有阅读 paper 的习惯，这也是一次对自己的挑战。 本文与 iOS 关系不大，多半偏向 paper 的学习和算法介绍，请读者根据兴趣自行阅读。 温习线性规划 当我们在 Storyboard 上建立完一堆约束后，发现其实所有的约束都可以用多个约束间的不等式关系来描述。于是乎将 UI...</a></p>
  <footer class="post-meta">
    <time datetime="2018-07-04">
      <i class="fa fa-calendar-o"></i> 2018-07-04
    </time>
    <span>
      <i class="fa fa-comments"></i> <a href="/autolayout-simplex/#container">Leave a comment</a>
    </span>
    <span>
    </span>
  </footer>
</article>
<article class="post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
  <header class="post-header">
    <h1 class="post-title"><a href="/fishhook-2/" title="Permalink to 验证试验 - 探求 fishhook 原理（二）">验证试验 - 探求 fishhook 原理（二）</a></h1>
  </header>
  <p><a href="/fishhook-2/" title="Permalink to 验证试验 - 探求 fishhook 原理（二）" class="read-more">示例 Demo Code 继续使用上一篇文中的代码示例： #include &lt;stdio.h&gt; #include &quot;fishhook.h&quot; static int (*original_strlen)(const char *_s); int new_strlen(const...</a></p>
  <footer class="post-meta">
    <time datetime="2018-02-04">
      <i class="fa fa-calendar-o"></i> 2018-02-04
    </time>
    <span>
      <i class="fa fa-comments"></i> <a href="/fishhook-2/#container">Leave a comment</a>
    </span>
    <span>
    </span>
  </footer>
</article>
<article class="post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
  <header class="post-header">
    <h1 class="post-title"><a href="/summary-2017/" title="Permalink to 直到双眼适应黑暗 - 2017 年小结">直到双眼适应黑暗 - 2017 年小结</a></h1>
  </header>
  <p><a href="/summary-2017/" title="Permalink to 直到双眼适应黑暗 - 2017 年小结" class="read-more">作者注：原本题目为《探寻属于自己的森林》，但是一想到可能有点绿(╯‵□′)╯︵┻━┻，就改成了《挪威的森林》中另外一句印象深刻的话。也许“适应黑暗”有些悲观，但是也能引申为从学生到职场员工的一种身份的转变吧。 忙忙碌碌地度过了 2017，这年一直在探求自己未来的职业方向，和探索需要学习的一些新的技术，汇总一下今年的一些成绩，也算是给自己一个交代（找点存在感）。 书与音乐 年初的时候给自己定下了这么一个目标：持续阅读，畅销书适量阅读，技术书精细挖掘。用豆瓣记录了一年的小说、传记、杂文及设计书阅读量，共20本，其用来处理平时在交通工具上的琐碎时间： 技术书上，决定以深度为主，因为想在移动领域更上一层，要做到每一页都事件，每一段代码都理清思路。以下为技术书单以及学习情况（按照推荐度排序）： 《iOS 应用逆向工程》：用来入门逆向看的书。这本书也是收获颇多的一本，从使用 class-dump 、Theos、Cydia 等逆向工具，到 Tweak 的编写实战直至使用 IDA 、LLDB...</a></p>
  <footer class="post-meta">
    <time datetime="2017-12-30">
      <i class="fa fa-calendar-o"></i> 2017-12-30
    </time>
    <span>
      <i class="fa fa-comments"></i> <a href="/summary-2017/#container">Leave a comment</a>
    </span>
    <span>
    </span>
  </footer>
</article>
<article class="post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
  <header class="post-header">
    <h1 class="post-title"><a href="/fishhook-1/" title="Permalink to 巧用符号表 - 探求 fishhook 原理（一）">巧用符号表 - 探求 fishhook 原理（一）</a></h1>
  </header>
  <p><a href="/fishhook-1/" title="Permalink to 巧用符号表 - 探求 fishhook 原理（一）" class="read-more">这是 探求 fishhook 原理 系列的第一篇。主要讲述了 Facebook 开源库 fishhook 的源码实现细节。需要具备 Mach-O 相关知识。可以先阅读 Mach-O 文件格式探索 一文。 关于符号表的基本知识...</a></p>
  <footer class="post-meta">
    <time datetime="2017-12-17">
      <i class="fa fa-calendar-o"></i> 2017-12-17
    </time>
    <span>
      <i class="fa fa-comments"></i> <a href="/fishhook-1/#container">Leave a comment</a>
    </span>
    <span>
    </span>
  </footer>
</article>
<article class="post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
  <header class="post-header">
    <h1 class="post-title"><a href="/Shadowsocks-2/" title="Permalink to Shadowsocks Probe II - TCP 代理过程">Shadowsocks Probe II - TCP 代理过程</a></h1>
  </header>
  <p><a href="/Shadowsocks-2/" title="Permalink to Shadowsocks Probe II - TCP 代理过程" class="read-more">（续 Shadowsocks Probe I - Socks5 与 EventLoop 事件分发） TCPRelay 及 Socket 监听事件 前文我们了解了 Shadowsocks...</a></p>
  <footer class="post-meta">
    <time datetime="2017-11-12">
      <i class="fa fa-calendar-o"></i> 2017-11-12
    </time>
    <span>
      <i class="fa fa-comments"></i> <a href="/Shadowsocks-2/#container">Leave a comment</a>
    </span>
    <span>
    </span>
  </footer>
</article>
<article class="post" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
  <header class="post-header">
    <h1 class="post-title"><a href="/iosre-1/" title="Permalink to Mach-O 文件格式探索">Mach-O 文件格式探索</a></h1>
  </header>
  <p><a href="/iosre-1/" title="Permalink to Mach-O 文件格式探索" class="read-more">最近开始研究 iOS 逆向的相关知识，并且使用 MonkeyDev 对 WeChat 进行了实战。这里我放出后期会持续更新的个人项目 WeCheat。在逆向专题真正开始之前，需要系统的学习一些软件内幕知识。这篇文章将从二进制格式开始讲起，并探秘 Mach-O 文件格式内容。 进程与二进制格式 进程在众多操作系统中都有提及，它是作为一个正在执行的程序的实例，这是 UNIX 的一个基本概念。而进程的出现是特殊文件在内存中加载得到的结果，这种文件必须使用操作系统可以认知的格式，这样才对该文件引入依赖库，初始化运行环境以及顺利地执行创造条件。 Mach-O（Mach...</a></p>
  <footer class="post-meta">
    <time datetime="2017-10-08">
      <i class="fa fa-calendar-o"></i> 2017-10-08
    </time>
    <span>
      <i class="fa fa-comments"></i> <a href="/iosre-1/#container">Leave a comment</a>
    </span>
    <span>
    </span>
  </footer>
</article>
    </main>
<footer class="footer">
  <div class="container">
    <ul class="icons">
      <li>
        <a href="https://github.com/desgard" class="icon-github" target="_blank">
          <i class="fa fa-github"></i>
        </a>
      </li>
      <li>
        <a href="https://www.facebook.com/desgard.duan" class="icon-facebook" target="_blank">
          <i class="fa fa-facebook"></i>
        </a>
      </li>
      <li>
        <a href="https://twitter.com/Desgard_Duan" class="icon-twitter" target="_blank">
          <i class="fa fa-twitter"></i>
        </a>
      </li>
      <li>
        <a href="https://stackoverflow.com/users/6119149/desgard-duan" class="icon-github" target="_blank">
          <i class="fa fa-stack-overflow"></i>
        </a>
      </li>
      <li>
        <a href="https://weibo.com/desgard" class="icon-instagram" target="_blank">
          <i class="fa fa-weibo"></i>
        </a>
      </li>
    </ul>
    <p>
      <q>I write many code to write less code.💻</q>
      <small>– Gua</small>
    </p>
    <small class="clearfix">
      Powered by <a href="http://jekyllrb.com" target="_blank">Jekyll</a> • <a href="https://github.com/desgard" target="_blank">Open source <i class="fa fa-heart"></i></a>
    </small>
  </div>
</footer>
<a class="scroll-up fa fa-chevron-up bounce" href="#" data-position="0"></a>
<div id="modalSearch" class="modal">
  <div class="modal__overlay"></div>
  <div class="modal__content">
    <a href="#!" class="modal-close" data-modal-close>&times;</a>
    <div class="search-container">
      <input type="text" id="search-input" placeholder="Search articles">
      <ul id="results-container"></ul>
    </div>
  </div>
</div>
    <script src="/assets/main-52d417e8a6ff9f5b168386d37c96338a.js"></script>
  </body>
  <script>
    var link = "" ;
    var os = function() {  
      var ua = navigator.userAgent,  
      isWindowsPhone = /(?:Windows Phone)/.test(ua),  
      isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone,   
      isAndroid = /(?:Android)/.test(ua),   
      isFireFox = /(?:Firefox)/.test(ua),   
      isChrome = /(?:Chrome|CriOS)/.test(ua),  
      isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua)),  
      isPhone = /(?:iPhone)/.test(ua) && !isTablet,  
      isPc = !isPhone && !isAndroid && !isSymbian;  
      return {  
        isTablet: isTablet,  
        isPhone: isPhone,  
        isAndroid : isAndroid,  
        isPc : isPc  
      };  
    }();  
    if (link.length > 0) {
      if (os.isAndroid || os.isPhone) {
        location.replace(link);
      }
    }
  </script>
</html>